package com.some;

import java.util.*;

public class BaiDu {
    // 最大公约数
    public int gcd(int m, int n) {
        if (m < n) {     // 保证被除数大于除数
            int temp = m;
            m = n;
            n = temp;
        }
        while (m % n != 0) {  // 在余数不能为0时,进行循环
            int temp = m % n;
            m = n;
            n = temp;
        }
        return n;    // 返回最大公约数
    }

    // 最小公倍数
    public int lcm(int x, int y, int gcd) {
        return x * y / gcd;
    }

    // 判断是否符合条件
    public boolean isTrue(int x, int y) {
        int gcd = gcd(x, y);
        return gcd == 1 && lcm(x, y, gcd) == x * y;
    }

    public List<Integer> finRes(int[] nums) {
        ArrayList<Integer> res = new ArrayList<>();
        for (int num : nums) {
            int sum = 0;
            // 开始查找
            for (int i = 1; i <= num; i++) {
                for (int j = i + 1; j <= (num / i) + 1; j++) {
                    if (i * j == num && isTrue(i, j)) {
                        sum++;
                    }
                }
            }
            res.add(sum);
        }
        return res;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = scanner.nextInt();
        }
        BaiDu baiDu = new BaiDu();
        List<Integer> res = baiDu.finRes(nums);
        for (Integer re : res) {
            System.out.println(re);
        }
    }
}
